home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / texte / jane152 / scl / rot13.scl < prev    next >
Text File  |  1998-10-29  |  2KB  |  66 lines

  1. # Verschlüsselt die Zeichenkette 's' durch Rotation um 13
  2. # Buchstaben. Liefert den verschlüsselten Text zurück.
  3. rot13(s)
  4. begin
  5.   set len to @s;                  # Länge von 's'
  6.   set i to 0;
  7.   while ( i < len )
  8.   begin
  9.     set c to s[i];                # Betrachte 'i'-tes Zeichen
  10.     if ( c >= 65 && c <= 90 )     # Großbuchstabe?
  11.     begin
  12.       set c to c - 65;            # Falls ja, verschieben
  13.       set c to (c + 13) % 26;
  14.       set c to c + 65;
  15.     end
  16.     else
  17.     begin
  18.       if ( c >= 97 && c <= 122 )  # Kleinbuchstabe?
  19.       begin
  20.         set c to c - 97;          # Falls ja, verschieben
  21.         set c to (c + 13) % 26;
  22.         set c to c + 97;
  23.       end
  24.     end                           # Sonst in Ruhe lassen
  25.     set s[i] to c;                # Verschobenes Zeichen einsetzen
  26.     set i to i + 1;               # nächstes Zeichen
  27.   end
  28.   return s;                       # Den verschlüsselten Text zurückgeben
  29. end
  30.  
  31. # Testet das Unterprogramm 'rot13'
  32. rot13test()
  33. begin
  34.   while ( 1 )                  # Ewige Schleife
  35.   begin
  36.     lprint('String, bitte');
  37.     set s to inputline();
  38.     if ( s == '#' )            # Abbruch, wenn '#' eingegeben
  39.       break;
  40.     set t to rot13(s);         # Verschlüsseln
  41.     lprint(t);                 # und ausgeben
  42.     set t to rot13(t);         # Wieder entschlüsseln
  43.     lprint(t);                 # und ausgeben
  44.   end
  45. end
  46.  
  47. # Wendet 'rot13' auf einen selektierten
  48. # Block im obersten Fenster an.
  49. rot13block()
  50. begin
  51.   tempcut(-1, 0);                     # Befördert den selektierten Block in
  52.                                       # den ersten temporären Puffer
  53.   set l to buflines(-1);
  54.                                       # Bearbeite alle Zeilen des Puffers
  55.   set i to 0;
  56.   while ( i < l )
  57.   begin
  58.     set s to rot13(bufgetline(-1, i));
  59.                                       # Verschlüssele jede Zeile
  60.     bufputline(-1, i, s);
  61.     set i to i + 1;                   # Weiter bei der nächsten Zeile
  62.   end
  63.   temppaste(-1, 0);                   # Füge verschlüsselten Text wieder ein
  64. end
  65.  
  66.